#ifndef ads1299_lowlevel_H
#define ads1299_lowlevel_H


#include <Arduino.h>
#include <stdint.h>  // C风格头文件

// 引脚定义（适用于ESP32，实际引脚依据硬件连接）
#define CS    5  
#define RESET 22 
#define PWDN  21  
#define DRDY  19

//SPI引脚
#define HSPI_CLK 14
#define HSPI_MISO 12
#define HSPI_MOSI 13
#define CS 2




// SPI命令定义
#define RREG    0x20 // 读取寄存器命令
#define WREG    0x40 // 写寄存器命令
#define RDATAC  0x10 // 进入连续读取模式命令
#define SDATAC  0x11 // 退出连续读取模式命令
#define RDATA   0x12 // 读取单次数据命令
#define WAKEUP  0x02 // 唤醒命令
#define STANDBY 0x04 // 待机命令
#define _RESET  0x06 // 复位命令
#define START_CMD 0x08 // 启动转换命令
#define STOP    0x0A // 停止转换命令

// 寄存器地址定义
#define ID           0x00
#define CONFIG1      0x01
#define CONFIG2      0x02
#define CONFIG3      0x03
#define LOFF         0x04
#define CH1SET       0x05
#define CH2SET       0x06
#define CH3SET       0x07
#define CH4SET       0x08
#define CH5SET       0x09
#define CH6SET       0x0A
#define CH7SET       0x0B
#define CH8SET       0x0C
#define BIAS_SENSP   0x0D
#define BIAS_SENSN   0x0E
#define LOFF_SENSP   0x0F
#define LOFF_SENSN   0x10
#define LOFF_FLIP    0x11
#define LOFF_STATP   0x12
#define LOFF_STATN   0x13
#define GPIO         0x14
#define MISC1        0x15
#define MISC2        0x16
#define CONFIG4      0x17

void powerdown();
void resetADS1299();
void ADS1299_StopContinuousMode();
void _START();
void WriteRegister(uint8_t regAddress, uint8_t value);
void ReadRegister(uint8_t regAddress);
void ADS1299_ReadRegisters(uint8_t startAddress, uint8_t numRegisters);
void _RDATA();
void _RDATAC();
void ADS1299_StartContinuousMode();
void updateChannelData();
void ADS1299_GetDeviceID();

#endif
